From b56f5cec3e2c6b421b57919b25457f452a2192b0 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 11 Aug 2014 18:02:12 +0200 Subject: [PATCH] treeview: Check the selected node active flag before maybe starting rubberband This check used to be present in the pre-gestures code, but was unintentionally removed when splitting code into drag/multiclick gestures. The policy used to be that if clicking happened on an already selected node, DnD would happen instead of rubberband selection, so this behavior is resuscitated. https://bugzilla.gnome.org/show_bug.cgi?id=734143 --- gtk/gtktreeview.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 76a290d01d..e7b60d9c6b 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -3328,13 +3328,18 @@ gtk_tree_view_drag_gesture_begin (GtkGestureDrag *gesture, GtkTreeView *tree_view) { gint bin_x, bin_y; + GtkRBTree *tree; + GtkRBNode *node; gtk_tree_view_convert_widget_to_bin_window_coords (tree_view, start_x, start_y, &bin_x, &bin_y); tree_view->priv->press_start_x = tree_view->priv->rubber_band_x = bin_x; tree_view->priv->press_start_y = tree_view->priv->rubber_band_y = bin_y; + _gtk_rbtree_find_offset (tree_view->priv->tree, bin_y + tree_view->priv->dy, + &tree, &node); if (tree_view->priv->rubber_banding_enable + && !GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED) && gtk_tree_selection_get_mode (tree_view->priv->selection) == GTK_SELECTION_MULTIPLE) { gboolean modify, extend; -- 2.30.2